package com.liuweiheng.cloud.timer;


import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 定时任务工具类
 *
 * @author lwh
 * @since 2021/1/27
 */
public class TimerUtils {

    /**
     * 指定时间执行任务
     * @param task 任务
     * @param time 具体执行时间
     */
    public static void timer(TimerTask task, Date time) {
        Timer timer = new Timer();
        timer.schedule(task, time);
    }

    /**
     * 延迟delay后执行，并持续固定period后反复执行
     * @param task 任务
     * @param delay 延迟时间
     * @param period 执行间隔时间
     */
    public static void timer(TimerTask task, long delay, long period) {
        Timer timer = new Timer();
        timer.schedule(task, delay, period);
    }

    /**
     * 延迟delay后执行，反复执行period次
     * @param task 任务
     * @param delay 延迟时间
     * @param period 频率
     */
    public static void timerAtFixedRate(TimerTask task, long delay, long period) {
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(task, delay, period);
    }

    /**
     * 指定时间执行，并按照频率来反复执行
     * @param task 任务
     * @param hourOfDay 执行时间（0-23）
     * @param period 频率
     */
    public static void timer(TimerTask task, int hourOfDay, long period) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        Date time = calendar.getTime();
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(task, time, period);
    }



}
